package cn.zhukelili.expand.$1;

/**
 * @description: 简单工厂模式中的场景类
 * @author: hhbeast
 * @since: 2018/7/29 13:44
 */
public class NvWa {
    public static void main(String[] args) {
//女娲第一次造人，火候不足，于是白色人种产生了
        System.out.println("--造出的第一批人是白色人种--");
        Human whiteHuman = HumanFactory.createHuman(WhiteHuman.class);
        whiteHuman.getColor();
        whiteHuman.talk();
//女娲第二次造人，火候过足，于是黑色人种产生了
        System.out.println("\n--造出的第二批人是黑色人种--");
        Human blackHuman = HumanFactory.createHuman(BlackHuman.class);
        blackHuman.getColor();
        blackHuman.talk();
//第三次造人，火候刚刚好，于是黄色人种产生了
        System.out.println("\n--造出的第三批人是黄色人种--");
        Human yellowHuman = HumanFactory.createHuman(YellowHuman.class);
        yellowHuman.getColor();
        yellowHuman.talk();
    }
}

/*
运行结果没有发生变化，但是我们的类图变简单了，而且调用者也比较简单，该模式是
工厂方法模式的弱化，因为简单，所以称为简单工厂模式（Simple Factory Pattern），也叫做
静态工厂模式。在实际项目中，采用该方法的案例还是比较多的，其缺点是工厂类的扩展比
较困难，不符合开闭原则，但它仍然是一个非常实用的设计模式。
 */
